package com.net.xpay.common.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.net.common.domain.CommonDomain;
import com.net.xpay.core.enums.OpenApiVersion;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.math.BigDecimal;
import java.util.List;

/**
 * 2020/4/25 21:01

 * 用户配置
 * id = user.id
 */
@Getter
@Setter
@NoArgsConstructor
public class UserProfile extends CommonDomain {
    @ApiModelProperty(notes = "接口版本")
    private OpenApiVersion apiVersion;

    @ApiModelProperty(notes = "是否开放充值功能页面 默认true")
    private Boolean openCharge;

    @ApiModelProperty(notes = "是否开放安全付接口 默认false")
    private Boolean openSafePay;

    @ApiModelProperty(notes = "是否验证安全付账号有无实名认证")
    private Boolean needSafePayAuth;

    @ApiModelProperty(notes = "是否开放自动付接口 默认false")
    private Boolean openAutoPay;

    @ApiModelProperty(notes = "是否支持安全付汇款充值 默认false")
    private Boolean openSafePayOfflineCharge;

    @ApiModelProperty(notes = "是否开放安全付收集付款功能 默认false")
    private Boolean openCollectionSafePay;

    @ApiModelProperty(notes = "是否开放充值回调通知")
    private Boolean openChargeNotify;

    @ApiModelProperty(notes = "是否开放开具发票功能 默认false")
    private Boolean openInvoice;

    @ApiModelProperty(notes = "是否开放安全发到卡功能 默认true")
    private Boolean openSafePayBank;

    @ApiModelProperty(notes = "限制安全发网页转账操作 只能通过接口转账")
    private Boolean limitSafePayWebPageTrans;

    @ApiModelProperty(notes = "是否开放安全发签约授权新方式")
    private Boolean openSafePayNewSignMethod;

    @ApiModelProperty(notes = "使用严格认证")
    private Boolean strictLogin;

    @ApiModelProperty(notes = "安全付使用谷歌验证器")
    private Boolean useGoogleAuth;

    @ApiModelProperty(notes = "谷歌验证器秘钥")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String googleAuthKey;

    @ApiModelProperty(notes = "谷歌验证器秘钥")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String googleAuthQrcode;

    @ApiModelProperty(notes = "批量有密通知回调地址 需要带协议 如http://")
    private String chargeNotifyUrl;

    @ApiModelProperty(notes = "是否开放安全付回调通知")
    private Boolean openSafePayNotify;

    @ApiModelProperty(notes = "安全付通知回调地址 需要带协议 如http://")
    private String safePayNotifyUrl;

    @ApiModelProperty(notes = "安全付批量转账是否需要短信验证")
    private Boolean batchEnsure;

    @ApiModelProperty(notes = "安全付批量转账需要短信验证的批次金额阈值 单位元")
    private BigDecimal ensureBatchAmount;

    @ApiModelProperty(notes = "接收短信验证码的手机号 如果不存在的话用注册手机号")
    private String receiveMobile;

    @ApiModelProperty(notes = "备用的接受短信验证码的手机号")
    private String spareReceiveMobile;

    @ApiModelProperty(notes = "转账日限额 单位元")
    private BigDecimal transAmountDayLimit;

    @ApiModelProperty(notes = "安全付单个支付宝转账日限额 元")
    private BigDecimal safePayTransAmountDayLimit;

    @ApiModelProperty(notes = "不显示网站客服微信")
    private Boolean noWechatQrCode;

    @ApiModelProperty(notes = "是否开放商户平台")
    private Boolean openMerchantPlatform;

    @ApiModelProperty(notes = "白名单ips")
    private List<String> whiteIps;

    public static UserProfile getInstance() {
        return new UserProfile();
    }
}